package muhnes.sizoo.controlador;

import java.io.IOException;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ComponentSystemEvent;
import muhnes.sizoo.dal.EspecieDao;
import muhnes.sizoo.dal.EspecieDaoImpl;
import muhnes.sizoo.modelo.Especie;

/**
 * Clase que define los metodos que se utilizaran en la exportacion de informacion
 * @author Ricardo Orellana
 */
@ManagedBean(name = "exportarBean")
@ViewScoped
public class ExportarBean implements Serializable {
    
    static {
        Map<String,String> temp = new HashMap<String,String>();
        temp.put("Phylum", "phylum");
        temp.put("Clase", "clase");
        temp.put("Subclase", "subclase");
        temp.put("Infraclase", "infraclase");
        temp.put("Orden", "orden");
        temp.put("Suborden", "suborden");
        temp.put("Superfamilia", "superfamilia");
        temp.put("Familia", "familia");
        temp.put("Subfamilia", "subfamilia");
        temp.put("Tribu", "tribu");
        temp.put("Genero", "genero");
        temp.put("Especie", "especie");
        temp.put("Subespecie", "subespecie");
        temp.put("Variedad", "variedad");
        campos = Collections.unmodifiableMap(temp);
    }
    
    private final static Map<String,String> campos; 
    
    private Especie especie;
    private List<Especie> listaEspecie;
    
    /**
     * Metodo que instancia una nueva especie
     */
    public ExportarBean() {
        EspecieDao dao = new EspecieDaoImpl();
        especie = new Especie();
        listaEspecie = dao.buscarTodos();
    }

    public void validarAcceso(ComponentSystemEvent evento) throws IOException {
        //boolean accesoPermitido = sesionBean.verificarPermiso("acceder", vistaProtegida); 
        
        /*if( !accesoPermitido ) {
            FacesContext contexto = FacesContext.getCurrentInstance();
            String nombreContexto = contexto.getExternalContext().getRequestContextPath();
            String urlError = nombreContexto + "/paginas/errores/error.xhtml";
            contexto.getExternalContext().redirect(urlError);
        }*/
    }
    
    /**
     * Metodo que obtiene una especie
     *  
     */
    public Especie getEspecie() {
        return especie;
    }
     
    /**
     * Metodo que devuelve una lista de especies
     * @return objeto list
     */
    public List<Especie> getListaEspecie() {
        if( listaEspecie == null ) {
            EspecieDao dao = new EspecieDaoImpl();
            listaEspecie = dao.buscarTodos();
        }
        return listaEspecie;
    }
 
    /**
     * Metodo que reinicia la lista
     */
    void recrearLista() {
        listaEspecie = null;
    }
    
}

